package com.ruoyix.flowable.service;

import com.ruoyix.flowable.domain.vo.BpmProcessInstanceVo;
import com.ruoyix.flowable.domain.bo.BpmProcessInstanceBo;
import com.ruoyix.common.core.page.TableDataInfo;
import com.ruoyix.common.core.domain.PageQuery;
import com.ruoyix.flowable.domain.vo.BpmTaskApproveVo;

import java.util.Map;

/**
 * 流程实例Service接口
 *
 * @author ruoyi
 * @date 2023-11-27
 */
public interface IBpmProcessInstanceService {

    /**
     * 查询流程实例
     */
    Map<String, Object> queryById(String processInstanceId);

    /**
     * 查询流程实例列表
     */
    TableDataInfo<BpmProcessInstanceVo> queryPageList(BpmProcessInstanceBo bo, PageQuery pageQuery);


    /**
     * 查询已完成流程实例列表
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<BpmProcessInstanceVo> finishList(BpmProcessInstanceBo bo, PageQuery pageQuery);


    /**
     * 新增流程实例
     */
    BpmTaskApproveVo addProcessInstance(String processDefinitionId);


    /**
     * 删除已完成流程任务信息信息
     */
    Boolean deleteHistoryProcessInstance(String processInstanceId);


    /**
     * 删除流程任务信息信息
     */
    Boolean deleteProcessInstance(String processInstanceId);


    /**
     * 新增业务流程实例
     * @param processDefinitionKey
     * @param formVariables
     * @return
     */
    String addBsProcessInstance(String processDefinitionKey,String formVariables);
}
